[アップデート] Amazon マシンイメージ(AMI)の無効化ができるようになりました
こんにちは、AWS事業本部の平木です!
ふと AWS 公式ドキュメントを眺めていたところ、
Amazon マシンイメージ(以下、AMI) を無効化できるアップデートがあったのでご紹介します。
AMI の無効化とは
「AMI の無効化」とは、文字通り AMI が無効化され使用できなくする状態にできます。
無効化した AMI をコンソール画面で見ると、ステータスが「無効」となっているのが分かります。
無効化することの影響
無効化することの影響はいくつかあります。
AMI の共有の無効化
まず、無効な AMI は共有できなくなり、AMI が公開されていた場合は非公開になります。
AMI が AWS アカウント、Organizations、または OU へ共有されていた場合、共有先のアカウントは AMI を使用できなくなります。
実際に AMI 所有者のアカウントAと共有先のアカウントBを使用し、確認してみました。
無効化前
無効化後
再有効化後
以上の通り、一度無効化してしまうと共有した情報が消えてしまうため、
再度共有したい場合には、再度共有の設定をし直す必要があります。
DescribeImages API 呼び出し
デフォルトでは、無効な AMI は DescribeImages API 呼び出しに表示されません。
# DescribeImages APIで呼び出し[無効化前] $ aws ec2 describe-images \ > --region ap-northeast-1 \ > --owners self \ > --query Images[].ImageId [ "ami-xxxxxxxxxxxxxxxxx", "ami-06f50bdccfdbd9f7e" ] # 無効化 $ aws ec2 disable-image \ > --region ap-northeast-1 \ > --image-id ami-06f50bdccfdbd9f7e { "Return": true } # DescribeImages APIで呼び出し[無効化後] $ aws ec2 describe-images \ > --region ap-northeast-1 \ > --owners self \ > --query Images[].ImageId [ "ami-xxxxxxxxxxxxxxxxx" ] # DescribeImages APIで呼び出し[無効化後 / --include-disabledオプション付き] $ aws ec2 describe-images \ > --region ap-northeast-1 \ > --owners self \ > --query Images[].ImageId \ > --include-disabled [ "ami-06f50bdccfdbd9f7e", "ami-xxxxxxxxxxxxxxxxx" ] # 有効化 $ aws ec2 enable-image \ > --region ap-northeast-1 \ > --image-id ami-06f50bdccfdbd9f7e { "Return": true } # DescribeImages APIで呼び出し[再有効化後] $ aws ec2 describe-images \ > --region ap-northeast-1 \ > --owners self \ > --query Images[].ImageId [ "ami-06f50bdccfdbd9f7e", "ami-xxxxxxxxxxxxxxxxx" ]
上記の通り、--include-disabled
オプションを付けることで表示可能です。
その他
無効な AMI は EC2 コンソールでのインスタンス起動の選択肢として利用できなくなります。
たとえば、無効な AMI は起動インスタンスウィザードの AMI カタログや、起動テンプレートの作成時に表示されません。
また、無効化前に作成した既存の起動テンプレートや Auto Scaling グループなどの起動サービスは、無効な AMI を参照し続けることができます。
ただし、無効な AMI からの後続のインスタンス起動は失敗するため、利用可能な AMI のみを参照するように起動テンプレートや Auto Scaling グループを更新する必要があります。
無効になった AMI を使用して以前に起動された EC2 インスタンスは影響を受けず、停止、起動、再起動が可能です。
無効化&有効化手順
マネジメントコンソール
①対象の AMI を選択し、②アクションから ③「AMI を無効にする」を押下します。
注意事項を確認し、問題なければ「AMI を無効にする」を押下し完了です。
有効化したい場合は、①「Disabled images」を選択し、②対象の AMI にチェックを入れ ③アクションから ④「AMI を有効にする」を押下します。
ポップアップの「AMI を有効にする」を押下し完了です。
AWS CLI
無効化したい場合は下記コマンドで無効化できます。
aws ec2 disable-image \ --image-id <無効化したいイメージ ID>
有効化したい場合は下記コマンドで有効化できます。
aws ec2 enable-image \ --image-id <有効化したいイメージ ID>
コスト
AMI を無効化しても AMI 自体が削除されたわけではないため、
EBS-backed AMI の場合は、引き続き AMI の EBS スナップショットの課金が発生します。
無効化している間、無駄な料金が発生してしまうため、
「AMI の登録解除およびスナップショットを削除する」または「EBS スナップショットのアーカイブ」
をしていただくのが良さそうです。
EBS スナップショットのアーカイブについては下記を参照ください。
参考
- Disable an AMI - Amazon Elastic Compute Cloud
- describe-images — AWS CLI 1.29.63 Command Reference
- disable-image — AWS CLI 1.29.63 Command Reference
- enable-image — AWS CLI 1.29.63 Command Reference
- Amazon EBS スナップショットのアーカイブ - Amazon Elastic Compute Cloud
おわりに
今回は、 AMI の無効化のアップデートについてご紹介しました。
先日、AMI のブロックパブリックアクセスが登場しましたが、
AMI をむやみに公開することへのリスクを減らすためのアップデートが続々出てきました。
一時的に使用させたくないけど後で調査のためにイメージを残しておきたいといった急を要す場合等、
様々なユースケースが想定されますので、ぜひキャッチアップいただければと思います。
この記事がどなたかの役に立てば嬉しいです。